home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 / Aminet - June 1993 [Walnut Creek].iso / usenet / sources / volume90 / util / stopclck / part01
Encoding:
Internet Message Format  |  1990-10-10  |  16.3 KB

  1. Path: abcfd20.larc.nasa.gov!amiga-request
  2. From: amiga-request@abcfd20.larc.nasa.gov (Amiga Sources/Binaries Moderator)
  3. Subject: v90i272: StopClick - stop empty drives clicking with SetCPU FASTROM, Part01/01
  4. Reply-To: isuihko@ujocs.joensuu.fi (Ismo Suihko)
  5. Newsgroups: comp.sources.amiga
  6. Message-ID: <comp.sources.amiga:v90i272@abcfd20.larc.nasa.gov>
  7. Date: 10 Oct 90 01:23:26 GMT
  8. Approved: tadguy@uunet.UU.NET (Tad Guy)
  9. X-Mail-Submissions-To: amiga@uunet.uu.net
  10. X-Post-Discussions-To: comp.sys.amiga
  11.  
  12. Submitted-by: isuihko@ujocs.joensuu.fi (Ismo Suihko)
  13. Posting-number: Volume 90, Issue 272
  14. Archive-name: util/stopclick/part01
  15.  
  16. [ uuencoded executable enclosed  ...tad ]
  17.  
  18. This program, StopClick, will stop the clicking of empty drives if you
  19. are using SetCPU1.6 (by Dave Haynie) to load KS 1.3 ROM image to fast
  20. 32-bit ram. It works even if you are using TDPatch13 from CrossDos.
  21. StopClick also fixes trackdisk read/write bug (just like NoClick did).
  22. Before trying to do any patches, StopClick will check if the system has
  23. a MMU, and after that it checks if the ROM image in 32-bit RAM is the
  24. correct one (KS 1.3). So it is safe to put this after SetCPU FASTROM in
  25. startup-sequence, even if you sometimes reboot your Amiga on 68000 mode
  26. or use other versions of Kickstarts.
  27.  
  28. #!/bin/sh
  29. # This is a shell archive.  Remove anything before this line, then unpack
  30. # it by saving it into a file and typing "sh file".  To overwrite existing
  31. # files, type "sh file -c".  You can also feed this as standard input via
  32. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  33. # will see the following message at the end:
  34. #        "End of archive 1 (of 1)."
  35. # Contents:  Makefile README.1st StopClick.a StopClick.uu readme
  36. # Wrapped by tadguy@abcfd20 on Tue Oct  9 21:23:24 1990
  37. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  38. if test -f 'Makefile' -a "${1}" != "-c" ; then 
  39.   echo shar: Will not clobber existing file \"'Makefile'\"
  40. else
  41. echo shar: Extracting \"'Makefile'\" \(213 characters\)
  42. sed "s/^X//" >'Makefile' <<'END_OF_FILE'
  43. X# Makefile for StopClick 04-Aug-90 by Ismo Suihko
  44. X
  45. XStopClick : StopClick.o
  46. X    Blink StopClick.o to StopClick
  47. X
  48. X# I: is assigned to include-directory
  49. XStopClick.o : StopClick.a
  50. X    Assem StopClick.a -o StopClick.o -i I:
  51. X
  52. END_OF_FILE
  53. if test 213 -ne `wc -c <'Makefile'`; then
  54.     echo shar: \"'Makefile'\" unpacked with wrong size!
  55. fi
  56. # end of 'Makefile'
  57. fi
  58. if test -f 'README.1st' -a "${1}" != "-c" ; then 
  59.   echo shar: Will not clobber existing file \"'README.1st'\"
  60. else
  61. echo shar: Extracting \"'README.1st'\" \(436 characters\)
  62. sed "s/^X//" >'README.1st' <<'END_OF_FILE'
  63. XThis program will stop clicking of empty disk drives, if you
  64. Xare using SetCPU1.6 FASTROM to load KS1.3 image to fast 32-bit RAM.
  65. X
  66. XI have tested it only on my system (with A2620), so I can't say absolutely
  67. Xsure that it works also on other systems on which you can use FASTROM, but I
  68. Xstrongly believe that there aren't any problems.
  69. XPlease email any comments to the following address, thanks.
  70. X
  71. X    isuihko@ujocs.joensuu.fi  (Ismo Suihko)
  72. END_OF_FILE
  73. if test 436 -ne `wc -c <'README.1st'`; then
  74.     echo shar: \"'README.1st'\" unpacked with wrong size!
  75. fi
  76. # end of 'README.1st'
  77. fi
  78. if test -f 'StopClick.a' -a "${1}" != "-c" ; then 
  79.   echo shar: Will not clobber existing file \"'StopClick.a'\"
  80. else
  81. echo shar: Extracting \"'StopClick.a'\" \(9658 characters\)
  82. sed "s/^X//" >'StopClick.a' <<'END_OF_FILE'
  83. X*   StopClick    version 1.0  for SetCPU1.6 users
  84. X*    Written by Ismo Suihko,  August 4, 1990    (isuihko@ujocs.joensuu.fi)
  85. X*    Released to the Public Domain
  86. X*
  87. X*    Routines _GetMMUType and TestFlags are borrowed from SetCPU1.6,
  88. X*    which is written by Dave Haynie.
  89. X*    Also include file setcpu.i is borrowed from SetCPU sources.
  90. X*
  91. X* Stops clicking of empty drives by patching 1.3 KS V34.5 ROM (check
  92. X* it with command 'version') image loaded in 2-bit RAM with
  93. X* 'SetCPU FASTROM'. Disk drive heads will after the patch be stepped
  94. X* (silently) in a negative rather than positive direction during the
  95. X* regular system checks for a disk change.
  96. X* Version 1.6 of SetCPU isn't doing that patch anymore.
  97. X* StopClick also fixes trackdisk read/write bug (just like NoClick did).
  98. X* This patching is possible, because ROM image isn't protected at all.
  99. X* StopClick does nothing, if there isn't MMU and the given address
  100. X* doesn't seem to contain right version of the ROM image, so it
  101. X* is safe to run this even if you sometimes boot on 68000 mode.
  102. X*
  103. X* Based on the NoClick program, which is written by Norman Iscove.
  104. X* It didn't work on my system, because of SetPatch and TDpatch13
  105. X* (TDpatch13 comes with CrossDos (a great product!)).
  106. X*
  107. X* USAGE:
  108. X*   First check the address of the KERNEL by using command 'SetCPU VERBOSE'
  109. X*   If you have A2620 or A2630 with 2 MB 32-bit RAM, then output may
  110. X*   contain this line
  111. X*     KERNEL: (PADDR: $  3a0000) (VADDR: $  fc0000) (SIZE: 256K)
  112. X*             ^^^^^^
  113. X*   Then give that address as a parameter to StopClick, like
  114. X*     StopClick 3a0000      ;(you can use numbers 0-9 and letters A-F and a-f)
  115. X*   Don't put '$' before the address, because it is used by shell.
  116. X*   Put StopClick to a startup-sequence after SetCPU FASTROM when you have
  117. X*   checked what the address of the KERNEL is. If you add there more memory,
  118. X*   you have to check the address again and do modifications if necessary.
  119. X*
  120. X*   e.g.
  121. X*    SetCPU FASTROM
  122. X*    stopclick 3a0000    ; KERNEL is at address $3a0000
  123. X*
  124. X* There aren't any checks if there is a FASTROM image REALLY IN USE.
  125. X* We only check, if there are signs of a 1.3 KS V34.2 ROM image..
  126. X* If FASTROM has been actice once, but then disactivated, the image could
  127. X* still be in the 32-bit RAM, so it is found from there, and patches are
  128. X* made but without any effect (and no harm either).
  129. X*
  130. X* Return codes:
  131. X*   0    complete success, fixes made now or they had been made earlier
  132. X*   5    no MMU (Memory Management Unit)
  133. X*  10    no KS ROM image found, or wrong version of ROM
  134. X*  15    KS ROM image found, but modifications couldn't be done??
  135. X*  99    invalid parameter
  136. X* We get return code 5 always if there isn't a MMU.
  137. X*
  138. X* BUGS:
  139. X*   No known bugs.
  140. X*   Maybe the address of KERNEL could be found by this program somehow...
  141. X*
  142. X* Sometimes clicking will end only after a couple of seconds, just like
  143. X* with NoClick. Don't ask me why it happens so, as I don't know.
  144. X* And there may be some odd floppy disk drives which don't like to step
  145. X* in a negative direction. I haven't yet heard anyone who owns such a drive.
  146. X*
  147. X* History:
  148. X*  V0.9  Jun 23, 1990  works, do we need more?
  149. X*  V1.0  Aug 04, 1990  some more checking, now we check if there is a MMU,
  150. X*               earlier we checked only if there was a '020 or better.
  151. X*               program is now 480 bytes long
  152. X*  V?.?  ??? ??, ????  will find the address of the ROM image by itself
  153. X*
  154. X* To compile first get the setcpu.i include file from the SetCPU1.6 sources,
  155. X* comment out (add ';'s) the last two lines containing the text
  156. X* ;     machine mc68020
  157. X* ;         mc68881
  158. X* and then compile with commands
  159. X*   Assem StopClick.a -o StopClick.o -i INC:
  160. X*   Blink StopClick.o to StopClick
  161. X* Makefile is also provided for easier compilation and linking.
  162. X
  163. X
  164. X* exec.library routines
  165. XLVODisable    EQU -120
  166. XLVOEnable    EQU -126
  167. XLVOCloseLibrary EQU -414
  168. XLVOOpenLibrary    EQU -552
  169. X* dos.library routines
  170. XLVOWrite    EQU -48
  171. XLVOOutput    EQU -60
  172. X
  173. X* some macros, etc.
  174. X include "setcpu.i"
  175. X
  176. X
  177. X    movem.l d0/a0,-(sp)     save information of command line parameters
  178. X
  179. X    bsr    _GetMMUType
  180. X    tst.l    d0        is there a MMU? 68851 or 68030?
  181. X    bne.s    scan
  182. X* no MMU
  183. X    addq.l    #8,sp        forget parameters before quitting
  184. X    moveq    #5,d0        no MMU
  185. X    bra    exit
  186. X
  187. Xscan
  188. X    movem.l (sp)+,d0/a0
  189. X* Now check, if there is a valid hexadesimal address given
  190. X    subq.l    #1,d0        take out end of line (null)
  191. X    beq.s    scan_err    is there any parameters at all
  192. X
  193. X    subq.l    #1,d0        counter (length of the parameter)
  194. X    moveq    #0,d1        result
  195. X    moveq    #0,d2        character from the command line
  196. Xscan_loop
  197. X    move.b    (a0)+,d2        get a character from the command line
  198. X
  199. X    cmpi.b    #' ',d2         check for the end of hex number
  200. X    beq.s    scan_ready    is it a space
  201. X    cmpi.b    #';',d2
  202. X    beq.s    scan_ready    is it a start of a comment
  203. X    cmpi.b    #9,d2
  204. X    beq.s    scan_ready    is it a tab
  205. X
  206. X    moveq    #'0',d3
  207. X    cmpi.b    #'9',d2
  208. X    ble.s    scan_number
  209. X    bclr.l    #5,d2        [a-f] -> [A-F]
  210. X    cmpi.b    #'A',d2
  211. X    blt.s    scan_err    less than 'A'
  212. X    cmpi.b    #'F',d2
  213. X    bgt.s    scan_err    greater than 'F'
  214. X    moveq    #'A'-10,d3
  215. Xscan_number
  216. X    sub.b    d3,d2
  217. X    blt.s    scan_err    less than '0'
  218. X    asl.l    #4,d1        multiply by $10
  219. X    add.l    d2,d1
  220. X    dbra    d0,scan_loop
  221. Xscan_ready
  222. X    tst.w    d1        should be of form xxxx0000
  223. X    beq.s    check
  224. X
  225. Xscan_err
  226. X    moveq    #99,d0
  227. X    bra.s    exit
  228. X
  229. Xcheck
  230. X    movea.l d1,a2        address of possible ROM image
  231. X
  232. X* Now check if the given address may contain ROM image with exec of V34.2
  233. X    cmpi.w    #' 3',$1c(a2)
  234. X    bne.s    bad_rom
  235. X    cmpi.l    #'4.2 ',$1e(a2)
  236. X    bne.s    bad_rom
  237. X
  238. X* add offset of trackdisk.device, should be of version 34.1
  239. X    adda.l    #$29564,a2
  240. X    cmpi.l    #'34.1',$36(a2)
  241. X    beq.s    patch
  242. Xbad_rom
  243. X    moveq    #10,d0        no ROM image found
  244. X    bra.s    exit
  245. X
  246. Xpatch
  247. X    moveq    #2,d7        2 patches
  248. X* disable interrupts
  249. X    CALLSYS Disable
  250. X
  251. X* first we check, if we need to patch, then we check was the patch successful
  252. X
  253. X* Stop the clicks
  254. X* fix 'bchg #$01,$41(a3)' to 'bset #$01,$41(a3)'
  255. X    lea    $104(a2),a0
  256. X    cmpi.w    #$086b,(a0)
  257. X    bne.s    1$
  258. X    move.w    #$08eb,(a0)
  259. X1$
  260. X    cmpi.w    #$08eb,(a0)
  261. X    bne.s    2$
  262. X    subq    #1,d7
  263. X
  264. X2$
  265. X* Repair trackdisk read/write bug originally at $feaf9c (1.3)
  266. X* fix 'cmp.l $8000,d0' to 'cmpi.l #$8000,d0'
  267. X    lea    $1a38(a2),a0
  268. X    cmpi.w    #$b0b9,(a0)
  269. X    bne.s    3$
  270. X    move.w    #$0c80,(a0)
  271. X3$
  272. X    cmpi.w    #$0c80,(a0)
  273. X    bne.s    4$
  274. X    subq    #1,d7
  275. X4$
  276. X* enable interrupts
  277. X    CALLSYS Enable
  278. X
  279. X    move.l    d7,d0        if d7 = 0, patching was succesful
  280. X    beq.s    exit
  281. X    moveq    #15,d0        patches failed??
  282. X
  283. Xexit
  284. X    tst.b    d0
  285. X    beq.s    real_exit
  286. X
  287. X* print the usage text
  288. X    move.l    d0,-(sp)        push the return code
  289. X    lea    dosname(pc),a1
  290. X    moveq    #0,d0
  291. X    CALLSYS OpenLibrary
  292. X    tst.l    d0
  293. X    beq.s    2$
  294. X    move.l    d0,a5
  295. X    exg    a5,a6
  296. X    jsr    LVOOutput(a6)
  297. X    move.l    d0,d1
  298. X    beq.s    1$
  299. X    lea    usage(pc),a0
  300. X    move.l    a0,d2
  301. X    moveq    #usagelen,d3
  302. X    jsr    LVOWrite(a6)
  303. X1$
  304. X    exg    a5,a6
  305. X    move.l    a5,a1
  306. X    CALLSYS CloseLibrary
  307. X2$
  308. X    move.l    (sp)+,d0        pop the return code
  309. X
  310. Xreal_exit
  311. X    rts
  312. X
  313. X
  314. X
  315. X* The following routines are borroved from SetCPU1.6 sources.
  316. X* I optimized the code a slightly to make my program smaller than 488
  317. X* bytes, because otherwise it would have taken 1+2 disk blocks using OFS.
  318. X* I removed also the 68040 check, because at this context we don't need
  319. X* to know whether there is exactly '030 or '040 as both have MMU.
  320. X
  321. X
  322. X;======================================================================
  323. X;
  324. X;    This routine checks CPU flags early in ExecBase for extended
  325. X;    CPUs that test as a 68020 under 1.3.  If these flags are set,
  326. X;    the actual CPU/MMU type test can be skipped.
  327. X;
  328. X;======================================================================
  329. X
  330. XTestFlags:
  331. X    moveq.l #0,d0
  332. X*     btst.b  #AFB_68040,ATNFLGS(a6)  ; Does the OS think an '040 is here?
  333. X*     beq.s     NoEarly40
  334. X*     move.l  #68040,d0
  335. X*     rts
  336. X*NoEarly40:
  337. X    btst.b    #AFB_68030,ATNFLGS(a6)  ; Does the OS think an '030 is here?
  338. X    beq.s    NoEarly30
  339. X    move.l    #68030,d0        ; Sure does...
  340. XNoEarly30:
  341. X    rts
  342. X
  343. X
  344. X;======================================================================
  345. X;
  346. X;    This function returns 0L if the system contains no MMU,
  347. X;    68851L if the system does contain an 68851, or the CPU number
  348. X;    for CPUs with integral CPUs.
  349. X;
  350. X;    This routine seems to lock up on at least some CSA 68020
  351. X;    boards, though it runs just fine on those from Ronin and
  352. X;    Commodore, as well as all 68030 boards it's been tested on.
  353. X;
  354. X;    ULONG GetMMUType()
  355. X;
  356. X;======================================================================
  357. X
  358. X_GetMMUType:
  359. X    move.l    4,a6            ; Get ExecBase
  360. X    bsr    TestFlags        ; Check extended CPU types
  361. X    tst.l    d0
  362. X    beq.s    MMURealTest
  363. X    rts
  364. X
  365. X    ; For any other machine, a real test must be done.  The test will
  366. X    ; try an MMU instruction.  The instruction will fail unless we're
  367. X    ; on a "bogus MMU" system, where the FPU responds as an MMU.
  368. XMMURealTest:
  369. X    movem.l a3/a4/a5,-(sp)          ; Save this stuff
  370. X    suba.l    a1,a1
  371. X    CALLSYS FindTask        ; Call FindTask(0L)
  372. X    move.l    d0,a3
  373. X
  374. X    move.l    TC_TRAPCODE(a3),a4      ; Change the exception vector
  375. X    lea    MMUTraps(pc),a0
  376. X    move.l    a0,TC_TRAPCODE(a3)
  377. X
  378. X    moveq.l #-1,d0            ; Try to detect undecode FPU
  379. X    subq.l    #4,sp            ; Get a local variable
  380. X    PMOVE_    tc,(sp)                 ; Let's try an MMU instruction
  381. X    addq.l    #4,sp            ; Return that local
  382. X    move.l    a4,TC_TRAPCODE(a3)      ; Reset exception stuff
  383. X    movem.l (sp)+,a3/a4/a5          ; and return the registers
  384. X    rts
  385. X
  386. X    ; This is the exception code.  No matter what machine we're on,
  387. X    ; we get an exception.    If the MMU's in place, we should get a
  388. X    ; privilige violation; if not, an F-Line emulation exception.
  389. XMMUTraps:
  390. X    move.l    (sp)+,d0                ; Get Amiga supplied exception #
  391. X    cmpi    #11,d0            ; Is it an F-Line?
  392. X    beq.s    MMUNope         ; If so, go to the fail routine
  393. X    move.l    #68851,d0        ; We have MMU
  394. X    addq.l    #4,2(sp)                ; Skip the MMU instruction
  395. X    rte
  396. XMMUNope:
  397. X    moveq.l #0,d0            ; It dinna woik,
  398. X    addq.l    #4,2(sp)                ; Skip the MMU instruction
  399. X    rte
  400. X
  401. X
  402. X
  403. X* some strings
  404. X
  405. Xdosname dc.b    'dos.library',0
  406. Xusage    dc.b    'StopClick v1.0 by IS.  '
  407. X    dc.b    'Usage: StopClick address-of-1.3-KS-FASTROM-image',10
  408. Xusagelen EQU    *-usage
  409. X
  410. X    END
  411. X
  412. END_OF_FILE
  413. if test 9658 -ne `wc -c <'StopClick.a'`; then
  414.     echo shar: \"'StopClick.a'\" unpacked with wrong size!
  415. fi
  416. # end of 'StopClick.a'
  417. fi
  418. if test -f 'StopClick.uu' -a "${1}" != "-c" ; then 
  419.   echo shar: Will not clobber existing file \"'StopClick.uu'\"
  420. else
  421. echo shar: Extracting \"'StopClick.uu'\" \(709 characters\)
  422. sed "s/^X//" >'StopClick.uu' <<'END_OF_FILE'
  423. Xbegin 666 StopClick
  424. XM```#\P`````````!``````````````!O```#Z0```&](YX"`80`!#$J`9@A0F
  425. XMCW`%8```MDS?`0%3@&=$4X!R`'0`%!@,`@`@9S(,`@`[9RP,`@`)9R9V,`P"E
  426. XM`#EO$@B"``4,`@!!;1@,`@!&;A)V-Y0#;0SI@=*"4<C_R$I!9P1P8V!D)$$,*
  427. XM:B`S`!QF&@RJ-"XR(``>9A#5_``"E60,JC,T+C$`-F<$<`I@/'X"3J[_B$'J$
  428. XM`00,4`AK9@0PO`CK#%`(ZV8"4T=!ZAHX#%"PN68$,+P,@`Q0#(!F`E-'3J[_W
  429. XM@B`'9P)P#TH`9S(O`$/Z`)9P`$ZN_=A*@&<@*D#+3DZN_\0B`&<,0?H`B"0(.
  430. XM=DA.KO_0RTXB34ZN_F(@'TYU<``(+@`"`2EG!B`\``$)ODYU+'@`!&'H2H!GW
  431. XM`DYU2.<`')/)3J[^VB9`*&L`,D'Z`!HG2``R</]9C_`70@!8CR=,`#),WS@`P
  432. XM3G4@'PQ```MG#"`\``$,\UBO``).<W``6*\``DYS9&]S+FQI8G)A<GD`4W1O+
  433. XM<$-L:6-K('8Q+C`@8GD@25,N("!5<V%G93H@4W1O<$-L:6-K(&%D9')E<W,MN
  434. X>;V8M,2XS+4M3+49!4U123TTM:6UA9V4*``````/R7
  435. X``
  436. Xend
  437. Xsize 480
  438. END_OF_FILE
  439. if test 709 -ne `wc -c <'StopClick.uu'`; then
  440.     echo shar: \"'StopClick.uu'\" unpacked with wrong size!
  441. fi
  442. # end of 'StopClick.uu'
  443. fi
  444. if test -f 'readme' -a "${1}" != "-c" ; then 
  445.   echo shar: Will not clobber existing file \"'readme'\"
  446. else
  447. echo shar: Extracting \"'readme'\" \(1115 characters\)
  448. sed "s/^X//" >'readme' <<'END_OF_FILE'
  449. XStopClick   version 1.0  for SetCPU1.6 users
  450. X    Written by Ismo Suihko,  August 4, 1990
  451. X    Released to the Public Domain
  452. X
  453. XThis program will stop the clicking of empty drives if you are using
  454. XSetCPU1.6 (by Dave Haynie) to load KS 1.3 ROM image to fast 32-bit ram.
  455. X
  456. XPlease check the beginning of the assembler source file for usage etc.
  457. XYou need to give the address of ROM image as a parameter.
  458. X
  459. XDistribution:
  460. X    This program is freely distributable, provided that all the following
  461. X    4 files are included unmodified:
  462. X
  463. X             size in bytes
  464. X    README        1115        you are reading it now
  465. X    Makefile     213        compiling instructions for Make
  466. X    StopClick     480        binary
  467. X    StopClick.a    9658        source
  468. X
  469. XTo compile, you need also file setcpu.i from SetCPU1.6 sources.
  470. X
  471. X
  472. XDisclaimer:
  473. X    Can I say shortly: "Standard disclaimers apply"
  474. X
  475. XIf you have comments about my program (like/dislike/etc), then email them to
  476. X    Internet: isuihko@ujocs.joensuu.fi    (try this address first)
  477. X    Bitnet:   06560L@FINUJO.BITNET
  478. X
  479. XIf you don't have access to electronic mail systems, then you can try
  480. X    Ismo Suihko
  481. X    Roivas
  482. X    81999 Joensuu
  483. X    FINLAND
  484. END_OF_FILE
  485. if test 1115 -ne `wc -c <'readme'`; then
  486.     echo shar: \"'readme'\" unpacked with wrong size!
  487. fi
  488. # end of 'readme'
  489. fi
  490. echo shar: End of archive 1 \(of 1\).
  491. cp /dev/null ark1isdone
  492. MISSING=""
  493. for I in 1 ; do
  494.     if test ! -f ark${I}isdone ; then
  495.     MISSING="${MISSING} ${I}"
  496.     fi
  497. done
  498. if test "${MISSING}" = "" ; then
  499.     echo You have the archive.
  500.     rm -f ark[1-9]isdone
  501. else
  502.     echo You still need to unpack the following archives:
  503.     echo "        " ${MISSING}
  504. fi
  505. ##  End of shell archive.
  506. exit 0
  507. -- 
  508. Mail submissions (sources or binaries) to <amiga@uunet.uu.net>.
  509. Mail comments to the moderator at <amiga-request@uunet.uu.net>.
  510. Post requests for sources, and general discussion to comp.sys.amiga.
  511.